import RSA from 'jsencrypt';

/**
 * RSA加密加密字符串
 * 用于输入密码的地方,比如登录/修改密码
 */
export async function encryptRSA(
  /** 要加密的字符串 */
  value: string,
  /** 公钥Key,一般通过接口获取 */
  getKeyFunc: () => Promise<unknown>
): Promise<string> {
  const SCRECT_KEY = await getKeyFunc();

  if (typeof SCRECT_KEY !== 'string') {
    throw Error('获取验证码失败');
  }

  const r = new RSA({
    // 加密方式
    default_public_exponent: 'pkcs1'
  });

  r.setPublicKey(SCRECT_KEY);

  return r.encrypt(value).toString();
}
